/**
 * npm i express nodemon formidable
 * npm install -g pnpm
 * pnpm i cors
 * node app.js  npm i nodemon -g
 */

let express = require('express')
let formidable = require('formidable')
let cors = require('cors')
let fs = require('fs')

let router = require('./router/edu')
let user = require('./router/userInfo')

let app = express()

// 取消跨域
app.use(cors())
// 接收post提交的数据
app.use(express.json())
app.use(express.urlencoded({
    extended:false
}))

app.use(router)
app.use(user)

// 上传接口,回调函数的参数 req表示前台传递过来的请求对象，res表示后台相应的对象
app.post('/upload',(req,res)=>{
    // 实例化一个IncomingForm对象
    let form = new formidable.IncomingForm()
    /*使用form.parse方法操作前台上传的数据
        第一个参数是前台的请求对象req
        第二个参数是一个回调函数，有三个参数
            参数1：上传失败的数据信息
            参数2：上传的文本信息
            参数3：上传的文件信息
    */
    form.parse(req,(err,fields,files)=>{
        if(err){
            console.log("上传失败");
            return false;
            
        }
        console.log(fields,files.file[0].filepath,files.file[0].originalFilename);
        let path = files.file[0].filepath   //获取上传文件的临时存储路径
        let name =files.file[0].originalFilename //获取上传文件的文件名

        // 创建一个可读流
        let rs = fs.createReadStream(path)
         // 创建一个可写流
        let ws = fs.createWriteStream(__dirname+'/images/'+name)
        // 把可读流的内容放入可写流
        rs.pipe(ws)
        console.log(fields,files);
        
        res.send({code:200,msg:'上传成功'})
    })
    // console.log(req);
    // res.send({code:200,msg:'上传成功'})
    
})

// 设置监听端口
app.listen(8080,()=>{
    console.log('服务启动成功');
    
})